package Validation;

/*
 * Class CPF
 * Função primária: validar CPF
 *
 */


/**
 * @author Gustavo C.
 * @author Rodrigo M.
 */
public class Cpf {

    int soma;
    String cpfin;
    int verificador1;
    int verificador2;
    int numero, numero1, aux;
    char n;
    String s;

    public boolean ValidaCpf() throws NumberFormatException{

        for (int i = 0; i < 9; i++) {

            n = cpfin.charAt(i);
            s = String.valueOf(n);
            numero = Integer.parseInt(s);

            aux = 10 - i;
            soma += aux * numero;

        }//for end

        if (soma % 11 < 2) {
            setVerificador1(0);
        } else {
            setVerificador1(11 - (soma % 11));
        }

        soma = 0;

        for (int i = 0; i < 10; i++) {
            n = cpfin.charAt(i);
            s = String.valueOf(n);
            numero = Integer.parseInt(s);

            aux = 11 - i;
            soma += aux * numero;

        }

        if (soma % 11 < 2) {
            setVerificador2(0);
        } else {
            setVerificador2(11 - (soma % 11));
        }

            n = cpfin.charAt(9);
            s = String.valueOf(n);
            numero = Integer.parseInt(s);

            n = cpfin.charAt(10);
            s = String.valueOf(n);
            numero1 = Integer.parseInt(s);

        if(getVerificador1()==numero && getVerificador2()==numero1)
            return true;
        else
            return false;
    
    }//validaCpf end

    public Cpf(String cpf) {
        setCpf(cpf);
    }

    public void setCpf(String cpf) throws StringIndexOutOfBoundsException{
          if (cpf.length() != 11) {
            throw new StringIndexOutOfBoundsException("Caracteres faltando ou em excesso.");
        } else 
            this.cpfin = cpf;
    }
  
    
    public String getCpf() {
        return this.cpfin;
    }

    public int getVerificador1() {
        return verificador1;
    }

    public void setVerificador1(int verificador1) {
        this.verificador1 = verificador1;
    }

    public int getVerificador2() {
        return verificador2;
    }

    public void setVerificador2(int verificador2) {
        this.verificador2 = verificador2;
    }
}
